import { createStore } from 'vuex'

export default createStore({
  // 定义所需要的状态的,达到了数据共享，这里定义的状态所有组件都可以使用
  state: {
    list: [
      {
        title: '吃饭',
        complete: true
      },
      {
        title: '睡觉',
        complete: false
      },
      {
        title: '打豆豆',
        complete: true
      },
      {
        title: '敲代码',
        complete: false
      },
    ]
  },
  getters: {
  },
  // 同步修改state 里面都是方法
  // 可以传2个参数，第一个是state，第二个是需要修改的值payload（可选）
  mutations: {
    // 添加任务
    addTodo(state, payload) {
      state.list.push(payload)
    },
    // 删除任务 splice:根据开始下标往后删除几个元素
    delTodo(state, payload) {
      state.list.splice(payload, 1)
    },
    // 清除已完成
    clear(state, payload) {
      // 把过滤之后的数组传进来
      state.list = payload
    },
    saveHistory(state, payload) {
      localStorage.setItem(payload, JSON.stringify(state.list))
    },
    getHistory(state, payload) {
      console.log(localStorage.getItem(payload))
      if (localStorage.getItem(payload)) {
        state.list = JSON.parse(localStorage.getItem(payload))
      }
    }
  },
  // 异步提交mutations 里面是方法
  // 传2个参数，第一个是参数store，第二个参数是修改的值params
  actions: {
    // asyncSetName(store, params) {
    //   setTimeout(() => {
    //     // commit是提交mutations 就是调用mutations的方法
    //     store.commit('addTodo', params)
    //   }, 2000)
    // }
  },
  // 做模块化的
  modules: {
  }
})
